Java 相关规范
Entity 命名规范
一个 Web 后端有各种各样的实体,为了区分这些实体是哪一层的对象最好使用规范的命名标准
分层领域模型规约
- DO(Data Object):与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。
- DTO(Data Transfer Object):数据传输对象,Service 或 Manager 向外传输的对象。
- BO(Business Object):业务对象。由 Service 层输出的封装业务逻辑的对象。
- AO(Application Object):应用对象。在 Web 层与 Service 层之间抽象的复用对象模型,极为贴近展示层,复用度不高。
- VO(View Object):显示层对象,通常是 Web 向模板渲染引擎层传输的对象。
- Query:数据查询对象,各层接收上层的查询请求。注意超过2个参数的查询封装,禁止使用 Map 类来传输。
领域模型命名规约
1) 数据对象:xxxDO,xxx即为数据表名。
2) 数据传输对象:xxxDTO,xxx为业务领域相关的名称。
3) 展示对象:xxxVO,xxx一般为网页名称。
4) POJO是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO。
泛型字母的含义
平时使用泛型时会发现有很多种字母,其实这些字母不是乱取的,一般使用以下规范
- T 意味某种类型
- E 意味 链表、数组里的元素。
- K 意味 Map(k,v) 里的键值 Key
- V 意味 返回或映射的值。
泛型的运用要受到如下限制 :
- 不能使用基本类型的类型参数,可以使用其包装类型代替。
- 静态成员无法使用类型参数。
- 不能使用泛型类异常
- 不能实例化泛型对象或数组
T t = new T(); T[] a=new T
注意比较特殊的是这个 ?
通配符,它表示不限定类型
List<?> // 表示可以存任何类型
// 下界通配符(? super)
List<? super A> // 意思是 List 集合,它可以持有 A 及其父类的实例。
// 上界通配符()
List<? extends A> // 可以包含 A及其子类
Java 的静态泛型方法
private static <T extends Comparable> T max(T t1, T t2) {
return t1.compareTo(t2) > 0 ? t1 : t2;
}